package config

import (
	"encoding/json"
	"go.uber.org/zap"
	"io"
	"net/url"
	"nvr-http-proxy/internal/domain"
	"os"
)

type NvrFile struct {
	path string
}

func NewNvrConfig(path string) *NvrFile {
	return &NvrFile{path: path}
}
func (p *NvrFile) InitReadNvrConfig() ([]domain.NvrConfig, error) {

	// 打开文件
	file, err := os.Open(p.path)
	if err != nil {
		zap.S().Errorw("Error opening file:", err)
		return nil, err
	}
	// 读取文件内容
	data, err := io.ReadAll(file)
	if err != nil {
		zap.S().Errorw("Error reading file:", err)
		return nil, err
	}
	var config []domain.NvrConfig
	err = json.Unmarshal(data, &config)
	if err != nil {
		zap.S().Errorw("Error decoding JSON:", err)
		return nil, err
	}
	// 输出结果
	for key, value := range config {
		_, err := url.Parse(value.Addr)
		if err != nil {
			zap.S().Errorw("Error parsing URL:", zap.String("URL", value.Addr))
			return nil, err
		}
		zap.S().Infof("nvr地址: %d, %s,%s,%s,%s\n", key, value.Name, value.Addr, value.Username, value.Password)
	}
	return config, err
}
